import * as Blockly from 'blockly';

// 检查块是否在异步上下文中
export function isInAsyncContext(block: Blockly.Block): boolean {
  // 检查当前块是否在异步函数内部
  let parent: Blockly.Block | null = block.getParent();

  while (parent) {
    // 检查所有可能的异步函数/方法定义块类型
    if ((parent.type === 'procedures_defreturn' ||
        parent.type === 'procedures_defnoreturn' ||
        parent.type === 'function_block' ||
        parent.type === 'method_definition') &&
        parent.getFieldValue('ASYNC') === 'TRUE') {
      return true;
    }
    parent = parent.getParent();
  }

  // 如果不在异步函数内部，返回 false
  return false;
}